home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / mips / Makefile < prev   
Encoding:
Makefile  |  2008-12-24  |  22.3 KB  |  722 lines

  1. #
  2. # This file is subject to the terms and conditions of the GNU General Public
  3. # License.  See the file "COPYING" in the main directory of this archive
  4. # for more details.
  5. #
  6. # Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle
  7. # DECStation modifications by Paul M. Antoine, 1996
  8. # Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
  9. #
  10. # This file is included by the global makefile so that you can add your own
  11. # architecture-specific flags and dependencies. Remember to do have actions
  12. # for "archclean" cleaning up for this architecture.
  13. #
  14.  
  15. KBUILD_DEFCONFIG := ip22_defconfig
  16.  
  17. cflags-y := -ffunction-sections
  18.  
  19. #
  20. # Select the object file format to substitute into the linker script.
  21. #
  22. ifdef CONFIG_CPU_LITTLE_ENDIAN
  23. 32bit-tool-archpref    = mipsel
  24. 64bit-tool-archpref    = mips64el
  25. 32bit-bfd        = elf32-tradlittlemips
  26. 64bit-bfd        = elf64-tradlittlemips
  27. 32bit-emul        = elf32ltsmip
  28. 64bit-emul        = elf64ltsmip
  29. else
  30. 32bit-tool-archpref    = mips
  31. 64bit-tool-archpref    = mips64
  32. 32bit-bfd        = elf32-tradbigmips
  33. 64bit-bfd        = elf64-tradbigmips
  34. 32bit-emul        = elf32btsmip
  35. 64bit-emul        = elf64btsmip
  36. endif
  37.  
  38. ifdef CONFIG_32BIT
  39. tool-archpref        = $(32bit-tool-archpref)
  40. UTS_MACHINE        := mips
  41. endif
  42. ifdef CONFIG_64BIT
  43. tool-archpref        = $(64bit-tool-archpref)
  44. UTS_MACHINE        := mips64
  45. endif
  46.  
  47. ifneq ($(SUBARCH),$(ARCH))
  48.   ifeq ($(CROSS_COMPILE),)
  49.     CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux-  $(tool-archpref)-linux-gnu-  $(tool-archpref)-unknown-linux-gnu-)
  50.   endif
  51. endif
  52.  
  53. ifdef CONFIG_32BIT
  54. ld-emul            = $(32bit-emul)
  55. vmlinux-32        = vmlinux
  56. vmlinux-64        = vmlinux.64
  57.  
  58. cflags-y        += -mabi=32
  59. endif
  60.  
  61. ifdef CONFIG_64BIT
  62. ld-emul            = $(64bit-emul)
  63. vmlinux-32        = vmlinux.32
  64. vmlinux-64        = vmlinux
  65.  
  66. cflags-y        += -mabi=64
  67. endif
  68.  
  69. all-$(CONFIG_BOOT_ELF32)    := $(vmlinux-32)
  70. all-$(CONFIG_BOOT_ELF64)    := $(vmlinux-64)
  71.  
  72. #
  73. # GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
  74. # code since it only slows down the whole thing.  At some point we might make
  75. # use of global pointer optimizations but their use of $28 conflicts with
  76. # the current pointer optimization.
  77. #
  78. # The DECStation requires an ECOFF kernel for remote booting, other MIPS
  79. # machines may also.  Since BFD is incredibly buggy with respect to
  80. # crossformat linking we rely on the elf2ecoff tool for format conversion.
  81. #
  82. cflags-y            += -G 0 -mno-abicalls -fno-pic -pipe
  83. cflags-y            += -msoft-float
  84. LDFLAGS_vmlinux            += -G 0 -static -n -nostdlib
  85. MODFLAGS            += -mlong-calls
  86.  
  87. cflags-y += -ffreestanding
  88.  
  89. #
  90. # We explicitly add the endianness specifier if needed, this allows
  91. # to compile kernels with a toolchain for the other endianness. We
  92. # carefully avoid to add it redundantly because gcc 3.3/3.4 complains
  93. # when fed the toolchain default!
  94. #
  95. # Certain gcc versions upto gcc 4.1.1 (probably 4.2-subversion as of
  96. # 2006-10-10 don't properly change the predefined symbols if -EB / -EL
  97. # are used, so we kludge that here.  A bug has been filed at
  98. # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413.
  99. #
  100. undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__
  101. undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__
  102. predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__
  103. predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__
  104. cflags-$(CONFIG_CPU_BIG_ENDIAN)        += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be))
  105. cflags-$(CONFIG_CPU_LITTLE_ENDIAN)    += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le))
  106.  
  107. cflags-$(CONFIG_CPU_HAS_SMARTMIPS)    += $(call cc-option,-msmartmips)
  108.  
  109. cflags-$(CONFIG_SB1XXX_CORELIS)    += $(call cc-option,-mno-sched-prolog) \
  110.                    -fno-omit-frame-pointer
  111.  
  112. #
  113. # CPU-dependent compiler/assembler options for optimization.
  114. #
  115. cflags-$(CONFIG_CPU_R3000)    += -march=r3000
  116. cflags-$(CONFIG_CPU_TX39XX)    += -march=r3900
  117. cflags-$(CONFIG_CPU_R6000)    += -march=r6000 -Wa,--trap
  118. cflags-$(CONFIG_CPU_R4300)    += -march=r4300 -Wa,--trap
  119. cflags-$(CONFIG_CPU_VR41XX)    += -march=r4100 -Wa,--trap
  120. cflags-$(CONFIG_CPU_R4X00)    += -march=r4600 -Wa,--trap
  121. cflags-$(CONFIG_CPU_TX49XX)    += -march=r4600 -Wa,--trap
  122. cflags-$(CONFIG_CPU_LOONGSON2)    += -march=r4600 -Wa,--trap
  123. cflags-$(CONFIG_CPU_MIPS32_R1)    += $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
  124.             -Wa,-mips32 -Wa,--trap
  125. cflags-$(CONFIG_CPU_MIPS32_R2)    += $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
  126.             -Wa,-mips32r2 -Wa,--trap
  127. cflags-$(CONFIG_CPU_MIPS64_R1)    += $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
  128.             -Wa,-mips64 -Wa,--trap
  129. cflags-$(CONFIG_CPU_MIPS64_R2)    += $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
  130.             -Wa,-mips64r2 -Wa,--trap
  131. cflags-$(CONFIG_CPU_R5000)    += -march=r5000 -Wa,--trap
  132. cflags-$(CONFIG_CPU_R5432)    += $(call cc-option,-march=r5400,-march=r5000) \
  133.             -Wa,--trap
  134. cflags-$(CONFIG_CPU_R5500)    += $(call cc-option,-march=r5500,-march=r5000) \
  135.             -Wa,--trap
  136. cflags-$(CONFIG_CPU_NEVADA)    += $(call cc-option,-march=rm5200,-march=r5000) \
  137.             -Wa,--trap
  138. cflags-$(CONFIG_CPU_RM7000)    += $(call cc-option,-march=rm7000,-march=r5000) \
  139.             -Wa,--trap
  140. cflags-$(CONFIG_CPU_RM9000)    += $(call cc-option,-march=rm9000,-march=r5000) \
  141.             -Wa,--trap
  142. cflags-$(CONFIG_CPU_SB1)    += $(call cc-option,-march=sb1,-march=r5000) \
  143.             -Wa,--trap
  144. cflags-$(CONFIG_CPU_R8000)    += -march=r8000 -Wa,--trap
  145. cflags-$(CONFIG_CPU_R10000)    += $(call cc-option,-march=r10000,-march=r8000) \
  146.             -Wa,--trap
  147.  
  148. cflags-$(CONFIG_CPU_R4000_WORKAROUNDS)    += $(call cc-option,-mfix-r4000,)
  149. cflags-$(CONFIG_CPU_R4400_WORKAROUNDS)    += $(call cc-option,-mfix-r4400,)
  150. cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS)    += $(call cc-option,-mno-daddi,)
  151.  
  152. ifdef CONFIG_CPU_SB1
  153. ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
  154. MODFLAGS    += -msb1-pass1-workarounds
  155. endif
  156. endif
  157.  
  158. #
  159. # Firmware support
  160. #
  161. libs-$(CONFIG_ARC)        += arch/mips/fw/arc/
  162. libs-$(CONFIG_CFE)        += arch/mips/fw/cfe/
  163. libs-$(CONFIG_SNIPROM)        += arch/mips/fw/sni/
  164. libs-y                += arch/mips/fw/lib/
  165. libs-$(CONFIG_SIBYTE_CFE)    += arch/mips/sibyte/cfe/
  166.  
  167. #
  168. # Board-dependent options and extra files
  169. #
  170.  
  171. #
  172. # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
  173. #
  174. core-$(CONFIG_MACH_JAZZ)    += arch/mips/jazz/
  175. cflags-$(CONFIG_MACH_JAZZ)    += -I$(srctree)/arch/mips/include/asm/mach-jazz
  176. load-$(CONFIG_MACH_JAZZ)    += 0xffffffff80080000
  177.  
  178. #
  179. # Common Alchemy Au1x00 stuff
  180. #
  181. core-$(CONFIG_SOC_AU1X00)    += arch/mips/alchemy/common/
  182. cflags-$(CONFIG_SOC_AU1X00)    += -I$(srctree)/arch/mips/include/asm/mach-au1x00
  183.  
  184. #
  185. # AMD Alchemy Pb1000 eval board
  186. #
  187. libs-$(CONFIG_MIPS_PB1000)    += arch/mips/alchemy/pb1000/
  188. cflags-$(CONFIG_MIPS_PB1000)    += -I$(srctree)/arch/mips/include/asm/mach-pb1x00
  189. load-$(CONFIG_MIPS_PB1000)    += 0xffffffff80100000
  190.  
  191. #
  192. # AMD Alchemy Pb1100 eval board
  193. #
  194. libs-$(CONFIG_MIPS_PB1100)    += arch/mips/alchemy/pb1100/
  195. cflags-$(CONFIG_MIPS_PB1100)    += -I$(srctree)/arch/mips/include/asm/mach-pb1x00
  196. load-$(CONFIG_MIPS_PB1100)    += 0xffffffff80100000
  197.  
  198. #
  199. # AMD Alchemy Pb1500 eval board
  200. #
  201. libs-$(CONFIG_MIPS_PB1500)    += arch/mips/alchemy/pb1500/
  202. cflags-$(CONFIG_MIPS_PB1500)    += -I$(srctree)/arch/mips/include/asm/mach-pb1x00
  203. load-$(CONFIG_MIPS_PB1500)    += 0xffffffff80100000
  204.  
  205. #
  206. # AMD Alchemy Pb1550 eval board
  207. #
  208. libs-$(CONFIG_MIPS_PB1550)    += arch/mips/alchemy/pb1550/
  209. cflags-$(CONFIG_MIPS_PB1550)    += -I$(srctree)/arch/mips/include/asm/mach-pb1x00
  210. load-$(CONFIG_MIPS_PB1550)    += 0xffffffff80100000
  211.  
  212. #
  213. # AMD Alchemy Pb1200 eval board
  214. #
  215. libs-$(CONFIG_MIPS_PB1200)    += arch/mips/alchemy/pb1200/
  216. cflags-$(CONFIG_MIPS_PB1200)    += -I$(srctree)/arch/mips/include/asm/mach-pb1x00
  217. load-$(CONFIG_MIPS_PB1200)    += 0xffffffff80100000
  218.  
  219. #
  220. # AMD Alchemy Db1000 eval board
  221. #
  222. libs-$(CONFIG_MIPS_DB1000)    += arch/mips/alchemy/db1x00/
  223. cflags-$(CONFIG_MIPS_DB1000)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  224. load-$(CONFIG_MIPS_DB1000)    += 0xffffffff80100000
  225.  
  226. #
  227. # AMD Alchemy Db1100 eval board
  228. #
  229. libs-$(CONFIG_MIPS_DB1100)    += arch/mips/alchemy/db1x00/
  230. cflags-$(CONFIG_MIPS_DB1100)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  231. load-$(CONFIG_MIPS_DB1100)    += 0xffffffff80100000
  232.  
  233. #
  234. # AMD Alchemy Db1500 eval board
  235. #
  236. libs-$(CONFIG_MIPS_DB1500)    += arch/mips/alchemy/db1x00/
  237. cflags-$(CONFIG_MIPS_DB1500)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  238. load-$(CONFIG_MIPS_DB1500)    += 0xffffffff80100000
  239.  
  240. #
  241. # AMD Alchemy Db1550 eval board
  242. #
  243. libs-$(CONFIG_MIPS_DB1550)    += arch/mips/alchemy/db1x00/
  244. cflags-$(CONFIG_MIPS_DB1550)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  245. load-$(CONFIG_MIPS_DB1550)    += 0xffffffff80100000
  246.  
  247. #
  248. # AMD Alchemy Db1200 eval board
  249. #
  250. libs-$(CONFIG_MIPS_DB1200)    += arch/mips/alchemy/pb1200/
  251. cflags-$(CONFIG_MIPS_DB1200)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  252. load-$(CONFIG_MIPS_DB1200)    += 0xffffffff80100000
  253.  
  254. #
  255. # AMD Alchemy Bosporus eval board
  256. #
  257. libs-$(CONFIG_MIPS_BOSPORUS)    += arch/mips/alchemy/db1x00/
  258. cflags-$(CONFIG_MIPS_BOSPORUS)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  259. load-$(CONFIG_MIPS_BOSPORUS)    += 0xffffffff80100000
  260.  
  261. #
  262. # AMD Alchemy Mirage eval board
  263. #
  264. libs-$(CONFIG_MIPS_MIRAGE)    += arch/mips/alchemy/db1x00/
  265. cflags-$(CONFIG_MIPS_MIRAGE)    += -I$(srctree)/arch/mips/include/asm/mach-db1x00
  266. load-$(CONFIG_MIPS_MIRAGE)    += 0xffffffff80100000
  267.  
  268. #
  269. # 4G-Systems eval board
  270. #
  271. libs-$(CONFIG_MIPS_MTX1)    += arch/mips/alchemy/mtx-1/
  272. load-$(CONFIG_MIPS_MTX1)    += 0xffffffff80100000
  273.  
  274. #
  275. # MyCable eval board
  276. #
  277. libs-$(CONFIG_MIPS_XXS1500)    += arch/mips/alchemy/xxs1500/
  278. load-$(CONFIG_MIPS_XXS1500)    += 0xffffffff80100000
  279.  
  280. #
  281. # Cobalt Server
  282. #
  283. core-$(CONFIG_MIPS_COBALT)    += arch/mips/cobalt/
  284. cflags-$(CONFIG_MIPS_COBALT)    += -I$(srctree)/arch/mips/include/asm/mach-cobalt
  285. load-$(CONFIG_MIPS_COBALT)    += 0xffffffff80080000
  286.  
  287. #
  288. # DECstation family
  289. #
  290. core-$(CONFIG_MACH_DECSTATION)    += arch/mips/dec/
  291. cflags-$(CONFIG_MACH_DECSTATION)+= -I$(srctree)/arch/mips/include/asm/mach-dec
  292. libs-$(CONFIG_MACH_DECSTATION)    += arch/mips/dec/prom/
  293. load-$(CONFIG_MACH_DECSTATION)    += 0xffffffff80040000
  294.  
  295. #
  296. # Wind River PPMC Board (4KC + GT64120)
  297. #
  298. core-$(CONFIG_WR_PPMC)        += arch/mips/gt64120/wrppmc/
  299. cflags-$(CONFIG_WR_PPMC)        += -I$(srctree)/arch/mips/include/asm/mach-wrppmc
  300. load-$(CONFIG_WR_PPMC)        += 0xffffffff80100000
  301.  
  302. #
  303. # lemote fulong mini-PC board
  304. #
  305. core-$(CONFIG_LEMOTE_FULONG) +=arch/mips/lemote/lm2e/
  306. load-$(CONFIG_LEMOTE_FULONG) +=0xffffffff80100000
  307. cflags-$(CONFIG_LEMOTE_FULONG) += -I$(srctree)/arch/mips/include/asm/mach-lemote
  308.  
  309. #
  310. # MIPS Malta board
  311. #
  312. core-$(CONFIG_MIPS_MALTA)    += arch/mips/mti-malta/
  313. cflags-$(CONFIG_MIPS_MALTA)    += -I$(srctree)/arch/mips/include/asm/mach-malta
  314. load-$(CONFIG_MIPS_MALTA)    += 0xffffffff80100000
  315. all-$(CONFIG_MIPS_MALTA)    := vmlinux.bin
  316.  
  317. #
  318. # MIPS SIM
  319. #
  320. core-$(CONFIG_MIPS_SIM)        += arch/mips/mipssim/
  321. cflags-$(CONFIG_MIPS_SIM)    += -I$(srctree)/arch/mips/include/asm/mach-mipssim
  322. load-$(CONFIG_MIPS_SIM)        += 0x80100000
  323.  
  324. #
  325. # PMC-Sierra MSP SOCs
  326. #
  327. core-$(CONFIG_PMC_MSP)        += arch/mips/pmc-sierra/msp71xx/
  328. cflags-$(CONFIG_PMC_MSP)    += -I$(srctree)/arch/mips/include/asm/pmc-sierra/msp71xx \
  329.                     -mno-branch-likely
  330. load-$(CONFIG_PMC_MSP)        += 0xffffffff80100000
  331.  
  332. #
  333. # PMC-Sierra Yosemite
  334. #
  335. core-$(CONFIG_PMC_YOSEMITE)    += arch/mips/pmc-sierra/yosemite/
  336. cflags-$(CONFIG_PMC_YOSEMITE)    += -I$(srctree)/arch/mips/include/asm/mach-yosemite
  337. load-$(CONFIG_PMC_YOSEMITE)    += 0xffffffff80100000
  338.  
  339. #
  340. # Basler eXcite
  341. #
  342. core-$(CONFIG_BASLER_EXCITE)    += arch/mips/basler/excite/
  343. cflags-$(CONFIG_BASLER_EXCITE)    += -I$(srctree)/arch/mips/include/asm/mach-excite
  344. load-$(CONFIG_BASLER_EXCITE)    += 0x80100000
  345.  
  346. #
  347. # LASAT platforms
  348. #
  349. core-$(CONFIG_LASAT)        += arch/mips/lasat/
  350. cflags-$(CONFIG_LASAT)        += -I$(srctree)/arch/mips/include/asm/mach-lasat
  351. load-$(CONFIG_LASAT)        += 0xffffffff80000000
  352.  
  353. #
  354. # Common VR41xx
  355. #
  356. core-$(CONFIG_MACH_VR41XX)    += arch/mips/vr41xx/common/
  357. cflags-$(CONFIG_MACH_VR41XX)    += -I$(srctree)/arch/mips/include/asm/mach-vr41xx
  358.  
  359. #
  360. # ZAO Networks Capcella (VR4131)
  361. #
  362. load-$(CONFIG_ZAO_CAPCELLA)    += 0xffffffff80000000
  363.  
  364. #
  365. # Victor MP-C303/304 (VR4122)
  366. #
  367. load-$(CONFIG_VICTOR_MPC30X)    += 0xffffffff80001000
  368.  
  369. #
  370. # IBM WorkPad z50 (VR4121)
  371. #
  372. core-$(CONFIG_IBM_WORKPAD)    += arch/mips/vr41xx/ibm-workpad/
  373. load-$(CONFIG_IBM_WORKPAD)    += 0xffffffff80004000
  374.  
  375. #
  376. # CASIO CASSIPEIA E-55/65 (VR4111)
  377. #
  378. core-$(CONFIG_CASIO_E55)    += arch/mips/vr41xx/casio-e55/
  379. load-$(CONFIG_CASIO_E55)    += 0xffffffff80004000
  380.  
  381. #
  382. # TANBAC VR4131 multichip module(TB0225) and TANBAC VR4131DIMM(TB0229) (VR4131)
  383. #
  384. load-$(CONFIG_TANBAC_TB022X)    += 0xffffffff80000000
  385.  
  386. # NXP STB225
  387. core-$(CONFIG_SOC_PNX833X)        += arch/mips/nxp/pnx833x/common/
  388. cflags-$(CONFIG_SOC_PNX833X)    += -Iarch/mips/include/asm/mach-pnx833x
  389. libs-$(CONFIG_NXP_STB220)        += arch/mips/nxp/pnx833x/stb22x/
  390. load-$(CONFIG_NXP_STB220)        += 0xffffffff80001000
  391. libs-$(CONFIG_NXP_STB225)        += arch/mips/nxp/pnx833x/stb22x/
  392. load-$(CONFIG_NXP_STB225)        += 0xffffffff80001000
  393.  
  394. #
  395. # Common NXP PNX8550
  396. #
  397. core-$(CONFIG_SOC_PNX8550)    += arch/mips/nxp/pnx8550/common/
  398. cflags-$(CONFIG_SOC_PNX8550)    += -I$(srctree)/arch/mips/include/asm/mach-pnx8550
  399.  
  400. #
  401. # NXP PNX8550 JBS board
  402. #
  403. libs-$(CONFIG_PNX8550_JBS)    += arch/mips/nxp/pnx8550/jbs/
  404. #cflags-$(CONFIG_PNX8550_JBS)    += -I$(srctree)/arch/mips/include/asm/mach-pnx8550
  405. load-$(CONFIG_PNX8550_JBS)    += 0xffffffff80060000
  406.  
  407. # NXP PNX8550 STB810 board
  408. #
  409. libs-$(CONFIG_PNX8550_STB810)    += arch/mips/nxp/pnx8550/stb810/
  410. load-$(CONFIG_PNX8550_STB810)    += 0xffffffff80060000
  411.  
  412. #
  413. # Common NEC EMMAXXX
  414. #
  415. core-$(CONFIG_SOC_EMMA)        += arch/mips/emma/common/
  416. cflags-$(CONFIG_SOC_EMMA2RH)    += -I$(srctree)/arch/mips/include/asm/mach-emma2rh
  417.  
  418. #
  419. # NEC EMMA2RH Mark-eins
  420. #
  421. core-$(CONFIG_NEC_MARKEINS)    += arch/mips/emma/markeins/
  422. load-$(CONFIG_NEC_MARKEINS)    += 0xffffffff88100000
  423.  
  424. #
  425. # SGI IP22 (Indy/Indigo2)
  426. #
  427. # Set the load address to >= 0xffffffff88069000 if you want to leave space for
  428. # symmon, 0xffffffff80002000 for production kernels.  Note that the value must
  429. # be aligned to a multiple of the kernel stack size or the handling of the
  430. # current variable will break so for 64-bit kernels we have to raise the start
  431. # address by 8kb.
  432. #
  433. core-$(CONFIG_SGI_IP22)        += arch/mips/sgi-ip22/
  434. cflags-$(CONFIG_SGI_IP22)    += -I$(srctree)/arch/mips/include/asm/mach-ip22
  435. ifdef CONFIG_32BIT
  436. load-$(CONFIG_SGI_IP22)        += 0xffffffff88002000
  437. endif
  438. ifdef CONFIG_64BIT
  439. load-$(CONFIG_SGI_IP22)        += 0xffffffff88004000
  440. endif
  441.  
  442. #
  443. # SGI-IP27 (Origin200/2000)
  444. #
  445. # Set the load address to >= 0xc000000000300000 if you want to leave space for
  446. # symmon, 0xc00000000001c000 for production kernels.  Note that the value must
  447. # be 16kb aligned or the handling of the current variable will break.
  448. #
  449. ifdef CONFIG_SGI_IP27
  450. core-$(CONFIG_SGI_IP27)        += arch/mips/sgi-ip27/
  451. cflags-$(CONFIG_SGI_IP27)    += -I$(srctree)/arch/mips/include/asm/mach-ip27
  452. ifdef CONFIG_MAPPED_KERNEL
  453. load-$(CONFIG_SGI_IP27)        += 0xc00000004001c000
  454. OBJCOPYFLAGS            := --change-addresses=0x3fffffff80000000
  455. dataoffset-$(CONFIG_SGI_IP27)    += 0x01000000
  456. else
  457. load-$(CONFIG_SGI_IP27)        += 0xa80000000001c000
  458. OBJCOPYFLAGS            := --change-addresses=0x57ffffff80000000
  459. endif
  460. endif
  461.  
  462. #
  463. # SGI IP28 (Indigo2 R10k)
  464. #
  465. # Set the load address to >= 0xa800000020080000 if you want to leave space for
  466. # symmon, 0xa800000020004000 for production kernels ?  Note that the value must
  467. # be 16kb aligned or the handling of the current variable will break.
  468. # Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
  469. #
  470. ifdef CONFIG_SGI_IP28
  471.   ifeq ($(call cc-option-yn,-mr10k-cache-barrier=1), n)
  472.       $(error gcc doesn't support needed option -mr10k-cache-barrier=1)
  473.   endif
  474. endif
  475. core-$(CONFIG_SGI_IP28)        += arch/mips/sgi-ip22/
  476. cflags-$(CONFIG_SGI_IP28)    += -mr10k-cache-barrier=1 -I$(srctree)/arch/mips/include/asm/mach-ip28
  477. load-$(CONFIG_SGI_IP28)        += 0xa800000020004000
  478.  
  479. #
  480. # SGI-IP32 (O2)
  481. #
  482. # Set the load address to >= 80069000 if you want to leave space for symmon,
  483. # 0xffffffff80004000 for production kernels.  Note that the value must be aligned to
  484. # a multiple of the kernel stack size or the handling of the current variable
  485. # will break.
  486. #
  487. core-$(CONFIG_SGI_IP32)        += arch/mips/sgi-ip32/
  488. cflags-$(CONFIG_SGI_IP32)    += -I$(srctree)/arch/mips/include/asm/mach-ip32
  489. load-$(CONFIG_SGI_IP32)        += 0xffffffff80004000
  490.  
  491. #
  492. # Sibyte SB1250/BCM1480 SOC
  493. #
  494. # This is a LIB so that it links at the end, and initcalls are later
  495. # the sequence; but it is built as an object so that modules don't get
  496. # removed (as happens, even if they have __initcall/module_init)
  497. #
  498. core-$(CONFIG_SIBYTE_BCM112X)    += arch/mips/sibyte/sb1250/
  499. core-$(CONFIG_SIBYTE_BCM112X)    += arch/mips/sibyte/common/
  500. cflags-$(CONFIG_SIBYTE_BCM112X)    += -I$(srctree)/arch/mips/include/asm/mach-sibyte \
  501.             -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
  502.  
  503. core-$(CONFIG_SIBYTE_SB1250)    += arch/mips/sibyte/sb1250/
  504. core-$(CONFIG_SIBYTE_SB1250)    += arch/mips/sibyte/common/
  505. cflags-$(CONFIG_SIBYTE_SB1250)    += -I$(srctree)/arch/mips/include/asm/mach-sibyte \
  506.             -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
  507.  
  508. core-$(CONFIG_SIBYTE_BCM1x55)    += arch/mips/sibyte/bcm1480/
  509. core-$(CONFIG_SIBYTE_BCM1x55)    += arch/mips/sibyte/common/
  510. cflags-$(CONFIG_SIBYTE_BCM1x55)    += -I$(srctree)/arch/mips/include/asm/mach-sibyte \
  511.             -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
  512.  
  513. core-$(CONFIG_SIBYTE_BCM1x80)    += arch/mips/sibyte/bcm1480/
  514. core-$(CONFIG_SIBYTE_BCM1x80)    += arch/mips/sibyte/common/
  515. cflags-$(CONFIG_SIBYTE_BCM1x80)    += -I$(srctree)/arch/mips/include/asm/mach-sibyte \
  516.             -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
  517.  
  518. #
  519. # Sibyte BCM91120x (Carmel) board
  520. # Sibyte BCM91120C (CRhine) board
  521. # Sibyte BCM91125C (CRhone) board
  522. # Sibyte BCM91125E (Rhone) board
  523. # Sibyte SWARM board
  524. # Sibyte BCM91x80 (BigSur) board
  525. #
  526. core-$(CONFIG_SIBYTE_CARMEL)    += arch/mips/sibyte/swarm/
  527. load-$(CONFIG_SIBYTE_CARMEL)    := 0xffffffff80100000
  528. core-$(CONFIG_SIBYTE_CRHINE)    += arch/mips/sibyte/swarm/
  529. load-$(CONFIG_SIBYTE_CRHINE)    := 0xffffffff80100000
  530. core-$(CONFIG_SIBYTE_CRHONE)    += arch/mips/sibyte/swarm/
  531. load-$(CONFIG_SIBYTE_CRHONE)    := 0xffffffff80100000
  532. core-$(CONFIG_SIBYTE_RHONE)    += arch/mips/sibyte/swarm/
  533. load-$(CONFIG_SIBYTE_RHONE)    := 0xffffffff80100000
  534. core-$(CONFIG_SIBYTE_SENTOSA)    += arch/mips/sibyte/swarm/
  535. load-$(CONFIG_SIBYTE_SENTOSA)    := 0xffffffff80100000
  536. core-$(CONFIG_SIBYTE_SWARM)    += arch/mips/sibyte/swarm/
  537. load-$(CONFIG_SIBYTE_SWARM)    := 0xffffffff80100000
  538. core-$(CONFIG_SIBYTE_BIGSUR)    += arch/mips/sibyte/swarm/
  539. load-$(CONFIG_SIBYTE_BIGSUR)    := 0xffffffff80100000
  540.  
  541. #
  542. # Broadcom BCM47XX boards
  543. #
  544. core-$(CONFIG_BCM47XX)        += arch/mips/bcm47xx/
  545. cflags-$(CONFIG_BCM47XX)    += -I$(srctree)/arch/mips/include/asm/mach-bcm47xx
  546. load-$(CONFIG_BCM47XX)        := 0xffffffff80001000
  547.  
  548. #
  549. # SNI RM
  550. #
  551. core-$(CONFIG_SNI_RM)        += arch/mips/sni/
  552. cflags-$(CONFIG_SNI_RM)        += -I$(srctree)/arch/mips/include/asm/mach-rm
  553. ifdef CONFIG_CPU_LITTLE_ENDIAN
  554. load-$(CONFIG_SNI_RM)        += 0xffffffff80600000
  555. else
  556. load-$(CONFIG_SNI_RM)        += 0xffffffff80030000
  557. endif
  558. all-$(CONFIG_SNI_RM)        := vmlinux.ecoff
  559.  
  560. #
  561. # Common TXx9
  562. #
  563. core-$(CONFIG_MACH_TX39XX)    += arch/mips/txx9/generic/
  564. cflags-$(CONFIG_MACH_TX39XX) += -I$(srctree)/arch/mips/include/asm/mach-tx39xx
  565. load-$(CONFIG_MACH_TX39XX)    += 0xffffffff80050000
  566. core-$(CONFIG_MACH_TX49XX)    += arch/mips/txx9/generic/
  567. cflags-$(CONFIG_MACH_TX49XX) += -I$(srctree)/arch/mips/include/asm/mach-tx49xx
  568. load-$(CONFIG_MACH_TX49XX)    += 0xffffffff80100000
  569.  
  570. #
  571. # Toshiba JMR-TX3927 board
  572. #
  573. core-$(CONFIG_TOSHIBA_JMR3927)    += arch/mips/txx9/jmr3927/
  574.  
  575. #
  576. # Routerboard 532 board
  577. #
  578. core-$(CONFIG_MIKROTIK_RB532)    += arch/mips/rb532/
  579. cflags-$(CONFIG_MIKROTIK_RB532) += -I$(srctree)/arch/mips/include/asm/mach-rc32434
  580. load-$(CONFIG_MIKROTIK_RB532)    += 0xffffffff80101000
  581.  
  582. #
  583. # Toshiba RBTX49XX boards
  584. #
  585. core-$(CONFIG_TOSHIBA_RBTX4927)    += arch/mips/txx9/rbtx4927/
  586. core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/txx9/rbtx4938/
  587. core-$(CONFIG_TOSHIBA_RBTX4939) += arch/mips/txx9/rbtx4939/
  588.  
  589. cflags-y            += -I$(srctree)/arch/mips/include/asm/mach-generic
  590. drivers-$(CONFIG_PCI)        += arch/mips/pci/
  591.  
  592. ifdef CONFIG_32BIT
  593. ifdef CONFIG_CPU_LITTLE_ENDIAN
  594. JIFFIES            = jiffies_64
  595. else
  596. JIFFIES            = jiffies_64 + 4
  597. endif
  598. else
  599. JIFFIES            = jiffies_64
  600. endif
  601.  
  602. #
  603. # Automatically detect the build format. By default we choose
  604. # the elf format according to the load address.
  605. # We can always force a build with a 64-bits symbol format by
  606. # passing 'KBUILD_SYM32=no' option to the make's command line.
  607. #
  608. ifdef CONFIG_64BIT
  609.   ifndef KBUILD_SYM32
  610.     ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
  611.       KBUILD_SYM32 = y
  612.     endif
  613.   endif
  614.  
  615.   ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy)
  616.     cflags-y += -msym32 -DKBUILD_64BIT_SYM32
  617.   else
  618.     ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y)
  619.       $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32)
  620.     endif
  621.   endif
  622. endif
  623.  
  624. KBUILD_AFLAGS    += $(cflags-y)
  625. KBUILD_CFLAGS    += $(cflags-y) \
  626.             -D"VMLINUX_LOAD_ADDRESS=$(load-y)"
  627.  
  628. LDFLAGS            += -m $(ld-emul)
  629.  
  630. ifdef CONFIG_MIPS
  631. CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -xc /dev/null | \
  632.     egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
  633.     sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
  634. ifdef CONFIG_64BIT
  635. CHECKFLAGS        += -m64
  636. endif
  637. endif
  638.  
  639. OBJCOPYFLAGS        += --remove-section=.reginfo
  640.  
  641. #
  642. # Choosing incompatible machines durings configuration will result in
  643. # error messages during linking.  Select a default linkscript if
  644. # none has been choosen above.
  645. #
  646.  
  647. CPPFLAGS_vmlinux.lds := \
  648.     $(KBUILD_CFLAGS) \
  649.     -D"LOADADDR=$(load-y)" \
  650.     -D"JIFFIES=$(JIFFIES)" \
  651.     -D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)"
  652.  
  653. head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
  654.  
  655. libs-y            += arch/mips/lib/
  656.  
  657. core-y            += arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
  658.  
  659. drivers-$(CONFIG_OPROFILE)    += arch/mips/oprofile/
  660.  
  661. ifdef CONFIG_LASAT
  662. rom.bin rom.sw: vmlinux
  663.     $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@
  664. endif
  665.  
  666. #
  667. # Some machines like the Indy need 32-bit ELF binaries for booting purposes.
  668. # Other need ECOFF, so we build a 32-bit ELF binary for them which we then
  669. # convert to ECOFF using elf2ecoff.
  670. #
  671. vmlinux.32: vmlinux
  672.     $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
  673.  
  674. #
  675. # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
  676. # ELF files from 32-bit files by conversion.
  677. #
  678. vmlinux.64: vmlinux
  679.     $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
  680.  
  681. makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) $(1)
  682.  
  683. all:    $(all-y)
  684.  
  685. vmlinux.bin: $(vmlinux-32)
  686.     +@$(call makeboot,$@)
  687.  
  688. vmlinux.ecoff: $(vmlinux-32)
  689.     +@$(call makeboot,$@)
  690.  
  691. vmlinux.srec: $(vmlinux-32)
  692.     +@$(call makeboot,$@)
  693.  
  694. CLEAN_FILES += vmlinux.ecoff \
  695.            vmlinux.srec
  696.  
  697. archprepare:
  698. ifdef CONFIG_MIPS32_N32
  699.     @echo '  Checking missing-syscalls for N32'
  700.     $(Q)$(MAKE) $(build)=. missing-syscalls EXTRA_CFLAGS="-mabi=n32"
  701. endif
  702. ifdef CONFIG_MIPS32_O32
  703.     @echo '  Checking missing-syscalls for O32'
  704.     $(Q)$(MAKE) $(build)=. missing-syscalls EXTRA_CFLAGS="-mabi=32"
  705. endif
  706.  
  707. archclean:
  708.     @$(MAKE) $(clean)=arch/mips/boot
  709.     @$(MAKE) $(clean)=arch/mips/lasat
  710.  
  711. define archhelp
  712.     echo '  vmlinux.ecoff        - ECOFF boot image'
  713.     echo '  vmlinux.bin          - Raw binary boot image'
  714.     echo '  vmlinux.srec         - SREC boot image'
  715.     echo
  716.     echo '  These will be default as apropriate for a configured platform.'
  717. endef
  718.  
  719. CLEAN_FILES += vmlinux.32 \
  720.            vmlinux.64 \
  721.            vmlinux.ecoff
  722.